#ifndef TASKQUEUE_H
#define TASKQUEUE_H
/************************************************
  * 描述
  * File: taskQueue.hpp
  * Author: qijiangyong@mozihealthcare.cn
  * Date: 2025-08-13
  * Update:
  ***********************************************/
#include "task.h"
#include <QMutexLocker>
#include <queue>
#include <vector>

class CXI_COMMON_EXPORT TaskQueue
{
public:
	/**
	 * @brief enqueue -- 入队
	 * @param task : 任务对象
	 */
	void enqueue(runnable_t* task);
	/**
	 * @brief dequeue -- 出队[移除并返回]
	 * @return : 队列头部的元素
	 */
	runnable_t* dequeue();
	/**
	 * @brief isEmpty -- 判空
	 * @return : 队列是否为空
	 */
	bool isEmpty() const;
	/**
	 * @brief queueSize -- 大小
	 * @return : 队列大小
	 */
	int queueSize() const;

private:
	mutable QMutex m_mutex;
	// 创建优先队列，指定容器和比较器
	std::priority_queue<TaskBase*, std::vector<TaskBase*>, compareTask> m_queue;
};

#endif // TASKQUEUE_H
